package com.ruoyi.im.mapper;

import com.ruoyi.im.domain.User;
import com.ruoyi.im.domain.UserGroupGrouping;
import com.ruoyi.im.domain.UserGroupList;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 用户管理 数据层
 * 
 * @author ruoyi
 * @date 2018-11-06
 */
public interface UserMapper 
{
	/**
     * 查询用户管理信息
     * 
     * @param id 用户管理ID
     * @return 用户管理信息
     */
	public User selectUserById(Long id);
	
	/**
     * 查询用户管理列表
     * 
     * @param user 用户管理信息
     * @return 用户管理集合
     */
	public List<User> selectUserList(User user);
	
	/**
     * 新增用户管理
     * 
     * @param user 用户管理信息
     * @return 结果
     */
	public int insertUser(User user);
	
	/**
     * 修改用户管理
     * 
     * @param user 用户管理信息
     * @return 结果
     */
	public int updateUser(User user);
	
	/**
     * 删除用户管理
     * 
     * @param id 用户管理ID
     * @return 结果
     */
	public int deleteUserById(Long id);
	
	/**
     * 批量删除用户管理
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	public int deleteUserByIds(String[] ids);

	/**
	 * 批量查询用户管理信息
	 *
	 * @param ids 用户管理ID
	 * @return 用户管理信息
	 */
	 List<User> selectUserByIds(String[] ids);

	/**
	 * 批量查询用户管理信息
	 *
	 * @param ids 用户管理ID
	 * @return 用户管理信息
	 */
	List<Map<String,Object>> selectUsersByIds(String[] ids);

	/**
	 * 用户登录查询好友分组
	 * @param userId
	 * @return
	 */
	List<UserGroupList> findUserGroupList(@Param("userId") String userId);


	/**
	 * 搜索好友
	 * @param search
	 * @return
	 */
	List<User> findUserByNickNameList(@Param("search") String search);


	/**
	 * 用户登录查询群分组
	 * @param userId
	 * @return
	 */
	List<UserGroupGrouping> findUserGroupGroupingList(@Param("userId") String userId);

	/**
	 * 查询群详情
	 * @param groupId
	 * @return
	 */
	List<User> findUserGroupListBygroupId(@Param("groupId") String groupId);

	/**
	 * 查询群好友详情
	 * @param userId
	 * @return
	 */
	User findUserByUserId(@Param("userId") String userId, @Param("groupId") String groupId);

	int updateUsers(User user);

	User selectUserByMemberId(String openid);
}